from camel.agents import ChatAgent
from camel.models import ModelFactory
from camel.societies import Workforce
from camel.toolkits import MCPToolkit
import asyncio
from camel.types import ModelPlatformType
from camel.messages import BaseMessage
from camel.types import RoleType
from dotenv import load_dotenv
from camel.tasks import Task
import os

load_dotenv()
Model_Type = os.getenv("MODEL_TYPE")
Model_Api = os.getenv("ZHIPU_API_KEY")
Model_Url = os.getenv("MODEL_URL")
model = ModelFactory.create(
    model_platform=ModelPlatformType.OPENAI,
    model_type=Model_Type,
    api_key=Model_Api,
    url=Model_Url
)

# 构建协调智能体
coordinator = ChatAgent(
    model=model,
    system_message='你是一个协调任务的智能体，负责拆解任务并协调执行',
    output_language='zh-CN',
)
# 构建任务智能体
task_agent = ChatAgent(
    model=model,
    system_message='你负责任务的规划和分解，将复杂的任务拆解为可执行的子任务',
    output_language='zh-CN',
)
# 创建workforce，填入协调智能体和任务智能体
workforce = Workforce(
    '旅游规划小组',
    coordinator_agent=coordinator,
    task_agent=task_agent,
)

# 创建工作节点
# 1.旅游日程计划制定者   2.旅游景点内具体的游玩项目规划者  3.资深游客评价改进
planmaker_agent = ChatAgent(
    model=model,
    system_message='''
        你是专业的旅游日程规划专家，擅长根据用户需求（包括旅行天数、预算、出行人群、兴趣偏好等）制定科学合理的整体行程框架。你的职责包括：
        确定每日行程的时间分配（交通、游玩、休息等）
        规划城市间 / 区域间的交通方式及衔接
        合理安排住宿地点与每日行程的匹配
        平衡行程节奏，避免过于紧凑或松散
        考虑季节、天气、节假日等因素对行程的影响
        输出清晰的日程表（含日期、时间段、主要安排、交通方式、住宿点）
        注意：专注于宏观行程规划，不涉及具体景点内的游玩细节，需为后续景点项目规划者预留衔接空间。

        ''',
    output_language='zh-CN',

)
detailer_agent = ChatAgent(
    model=model,
    system_message='''
        你是景点深度体验规划专家，负责在已确定的整体行程框架下，细化每个景点的具体游玩方案。你的工作内容包括：
        根据景点特色和用户兴趣，筛选核心必体验项目
        规划景点内的最佳游览路线（减少折返、避开高峰）
        推荐景点内的特色活动、表演或互动项目
        提示景点内的餐饮、休息、卫生间等便利设施位置
        提供景点内的节省时间技巧（如快速通道、最佳游览时段）
        预估每个项目的体验时长，确保与整体日程匹配
        注意：基于前序日程框架开展工作，不调整整体行程的时间和交通安排，仅专注于景点内部的深度规划。

        ''',
    output_language='zh-CN',

)
tourist_agent = ChatAgent(
    model=model,
    system_message='''
        你是拥有丰富旅行经验的评价改进专家，负责从游客体验角度优化行程方案。你的核心职责是：
        评估现有行程的合理性、舒适度和体验感
        结合同类目的地的游客真实评价，指出潜在问题（如排队过长、体验不佳的项目等）
        提出改进建议（如替换性价比低的项目、调整先后顺序、增加备选方案等）
        补充实用小贴士（当地隐藏玩法、避坑指南、省钱技巧等）
        考虑特殊需求（如带老人 / 小孩的便利性、残障人士友好度等）
        最终输出兼顾专业性与体验感的优化版行程
        注意：基于前两个角色的规划成果进行优化，保持建设性视角，不否定基础框架，重点提升行程的体验质量。

        ''',
    output_language='zh-CN',

)
# 将工作节点加入工作链
workforce.add_single_agent_worker(
    '你是专业的旅游日程规划专家，擅长根据用户需求（包括旅行天数、预算、出行人群、兴趣偏好等）制定科学合理的整体行程框架',
    worker=planmaker_agent,
).add_single_agent_worker(
    '你是景点深度体验规划专家，负责在已确定的整体行程框架下，细化每个景点的具体游玩方案。',
    worker=detailer_agent,
).add_single_agent_worker(
    '你是拥有丰富旅行经验的评价改进专家，负责从游客体验角度优化行程方案。',
    worker=tourist_agent,
)
# 启动任务
task = Task(
    content='制定一个2026年1月份，年轻情侣从中国河南省周口市自驾去河南省洛阳市的三日游规划',
    id='1'
)

# 用workforce处理任务
task = workforce.process_task(task)


